iT邦幫忙

2022 iThome 鐵人賽

DAY 5
0
自我挑戰組

用Python學習網路爬蟲30天系列 第 5

[Day5] 從網路取得資料2_進階的HTTP請求

  • 分享至 

  • xImage
  •  

送出進階的HTTP請求

有些特殊的HTTP請求,需要額外指定參數才能送出。

實作練習

  1. Cookie: 在get()函數使用cookies參數來送出資料
import requests 

url = "http://httpbin.org/cookies"

cookies = dict(name='Roro Chen')
r = requests.get(url, cookies=cookies)
print(r.text)

https://ithelp.ithome.com.tw/upload/images/20220919/20152180LBDU3wA8oJ.png

  1. 指定請求時間: 在get()函數指定timeout參數的期限時間,避免伺服器的回應時間太久
    (1)若在指定時間內做出回應,會顯示網頁內容
    (2)若沒有在指定時間內做出回應,會顯示錯誤資訊
import requests 

try:
    r = requests.get("http://www.google.com", timeout=0.01)
    print(r.text)
except requests.exceptions.Timeout as ex:
    print("錯誤: HTTP請求已經超過時間...\n" + str(ex))

https://ithelp.ithome.com.tw/upload/images/20220919/20152180GkHOnL5Vak.png

  1. 錯誤/例外處理
    當HTTP請求發生錯誤時,可以使用try/exception例外處理和Request例外物件來進行錯誤處理。
    常見的Request例外物件如下:
    • RequestException: HTTP請求錯誤時會出現
    • HTTPError: 回應不符合HTTP回應內容時會出現
    • ConnectionError: 網路連線或DNS錯誤時會出現
    • Timeout: HTTP請求超過指定時間時會出現
    • TooManyRedirects: 重新轉址超過設定的最大值時會出現
import requests 

url = 'http://www.google.com/404'

try:
    r = requests.get(url, timeout=3)
    r.raise_for_status()
except requests.exceptions.RequestException as ex1:
    print("Http請求錯誤: " + str(ex1))
except requests.exceptions.HTTPError as ex2:
    print("Http回應錯誤: " + str(ex2))
except requests.exceptions.ConnectionError as ex3:
    print("網路連線錯誤: " + str(ex3))
except requests.exceptions.Timeout as ex4:
    print("Timeout錯誤: " + str(ex4))   

https://ithelp.ithome.com.tw/upload/images/20220919/20152180jsmDBp8YCw.png

  1. 檔案存取
    Python提供檔案處理的內建函數,可以將資料寫入和讀取檔案內容。
    (1)取得的回應內容寫成檔案
import requests

r = requests.get("https://rouan0903.github.io/")
r.encoding = "utf-8"

fp = open("Hw1.txt", "w", encoding="utf8")
fp.write(r.text)
print("寫入檔案Hw1.txt...")
fp.close()

(2)讀取檔案的全部內容

fp = open("Hw1.txt", "r", encoding="utf8")
str = fp.read()
print("檔案內容:")
print(str)

https://ithelp.ithome.com.tw/upload/images/20220919/20152180b9U2JH9g8j.png


上一篇
[Day4] 從網路取得資料1_HTTP請求
下一篇
[Day6] 擷取靜態HTML網頁資料1_Beautiful Soup
系列文
用Python學習網路爬蟲30天30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言